package plggrupo6;

import atributosDef.AtributosDef;
import atributosDef.Instruccion;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import maquilaPila.MaquinaPila;

public class Main {
  public static void main(String[] args) throws Exception {   
      if(args.length == 2){
        Parser p = new Parser(new FileInputStream(args[0]));
        AtributosDef prog = p.Prog();
        if(prog != null){
          if(!prog.hayErrores()){
              //Creamos el archivo binario con el codigo a pila generado
              try {
                  ArrayList<Instruccion> codigoPila = prog.getCod();
                  //Se crea un Stream para guardar archivo
                  ObjectOutputStream archivoCodigoPila = new ObjectOutputStream(new FileOutputStream(args[1]));
                  //Escribimos todas las instrucciones generadas en el archivo
                  Iterator<Instruccion> it = codigoPila.iterator();
                  archivoCodigoPila.writeBytes("\n");
                  while(it.hasNext()){
                      archivoCodigoPila.writeBytes(it.next().toString());
                  }
                  //Cerramos el archivo
                  archivoCodigoPila.close();
              } catch (IOException ex) {
                  System.out.println(ex);
              }
          }
      }else{
            System.out.println("ERROR EN COMPILACION: Existen errores lexicos.");
        }
      }else{
          System.out.println("Numero de parametros incorrectos. Recuerde que debe introducir: \n-Nombre del fichero donde se encuentra el codigo fuente.\n-Nombre del fichero donde se generara el codigo pila.");
      }
  }
}

